--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Utilities.cpp 3deab29845fbfa978ce8b488505b05f6be8cf4e4 (3deab298) Text, 10.50 KB
Tff7b72#Tff7b72include T8b949e<Arduino.h>
Tff7b72#Tff7b72include T8b949e<EEPROM.h>
Tff7b72#Tff7b72include T8b949e<LoRa.h>
Tff7b72#Tff7b72include T8b949e"ROM.h"
Tff7b72#Tff7b72include T8b949e"Config.h"
Tff7b72#Tff7b72include T8b949e"Framing.h"
Tff7b72#Tff7b72include T8b949e"MD5.h"
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_indicate_errorTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffled_indicate_warningTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657uint8_t Te6edf3led_standby_min Tff7b72= T79c0ff1Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_max Tff7b72= T79c0ff22Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_value Tff7b72= Te6edf3led_standby_minTb4b4b4;
Tffa657int8_t Te6edf3led_standby_direction Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_wait Tff7b72= T79c0ff11000Tb4b4b4;
Tffa657void Td2a8ffled_indicate_standbyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_standby_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Te6edf3analogWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3led_standby_valueTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffled_indicate_not_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_standby_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Te6edf3analogWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3led_standby_valueTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffescapedSerialWriteTb4b4b4(Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3byte Tff7b72=Tff7b72= Te6edf3FENDTb4b4b4) Tb4b4b4{ Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FESCTb4b4b4)Tb4b4b4; Te6edf3byte Tff7b72= Te6edf3TFENDTb4b4b4; Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3byte Tff7b72=Tff7b72= Te6edf3FESCTb4b4b4) Tb4b4b4{ Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FESCTb4b4b4)Tb4b4b4; Te6edf3byte Tff7b72= Te6edf3TFESCTb4b4b4; Tb4b4b4}
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_errorTb4b4b4(Tffa657uint8_t Te6edf3error_codeTb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_ERRORTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3error_codeTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_radiostateTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_RADIO_STATETb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3radio_onlineTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_stat_rxTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_STAT_RXTb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3stat_rxTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3stat_rxTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3stat_rxTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3stat_rxTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_stat_txTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_STAT_TXTb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3stat_txTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3stat_txTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3stat_txTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3stat_txTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_stat_rssiTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_STAT_RSSITb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3last_rssiTff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_radio_lockTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_RADIO_LOCKTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3radio_lockedTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_spreadingfactorTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_SFTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3lora_sfTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_codingrateTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_CRTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3lora_crTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_txpowerTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_TXPOWERTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3lora_txpTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_bandwidthTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_BANDWIDTHTb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3lora_bwTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_frequencyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_FREQUENCYTb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3lora_freqTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_randomTb4b4b4(Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_RANDOMTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_READYTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_detectTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_DETECTTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3DETECT_RESPTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_versionTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_FW_VERSIONTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3MAJ_VERSTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3MIN_VERSTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657bool Td2a8ffisSplitPacketTb4b4b4(Tffa657uint8_t Te6edf3headerTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(Te6edf3header Tff7b72& Te6edf3FLAG_SPLITTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657uint8_t Td2a8ffpacketSequenceTb4b4b4(Tffa657uint8_t Te6edf3headerTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3header Tff7b72>Tff7b72> T79c0ff4Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffgetPacketDataTb4b4b4(Tffa657int Te6edf3lenTb4b4b4) Tb4b4b4{
Tff7b72while Tb4b4b4(Te6edf3lenTff7b72-Tff7b72-Tb4b4b4) Tb4b4b4{
Te6edf3pbufTb4b4b4[Te6edf3read_lenTff7b72+Tff7b72+Tb4b4b4] Tff7b72= Te6edf3LoRaTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffsetSpreadingFactorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Te6edf3LoRaTb4b4b4.Te6edf3setSpreadingFactorTb4b4b4(Te6edf3lora_sfTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffsetCodingRateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Te6edf3LoRaTb4b4b4.Te6edf3setCodingRate4Tb4b4b4(Te6edf3lora_crTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffsetTXPowerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A4Tb4b4b4) Te6edf3LoRaTb4b4b4.Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A9Tb4b4b4) Te6edf3LoRaTb4b4b4.Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffgetBandwidthTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3lora_bw Tff7b72= Te6edf3LoRaTb4b4b4.Te6edf3getSignalBandwidthTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffsetBandwidthTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3LoRaTb4b4b4.Te6edf3setSignalBandwidthTb4b4b4(Te6edf3lora_bwTb4b4b4)Tb4b4b4;
Te6edf3getBandwidthTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffgetFrequencyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3lora_freq Tff7b72= Te6edf3LoRaTb4b4b4.Te6edf3getFrequencyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffsetFrequencyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3LoRaTb4b4b4.Te6edf3setFrequencyTb4b4b4(Te6edf3lora_freqTb4b4b4)Tb4b4b4;
Te6edf3getFrequencyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657uint8_t Td2a8ffgetRandomTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3LoRaTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return T79c0ff0x00Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Td2a8ffeeprom_info_lockedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3lock_byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lock_byte Tff7b72=Tff7b72= Te6edf3INFO_LOCK_BYTETb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_dump_infoTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= Te6edf3ADDR_PRODUCTTb4b4b4; Te6edf3addr Tff7b72<Tff7b72= Te6edf3ADDR_INFO_LOCKTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_dump_configTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= Te6edf3ADDR_CONF_SFTb4b4b4; Te6edf3addr Tff7b72<Tff7b72= Te6edf3ADDR_CONF_OKTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_dump_allTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= T79c0ff0Tb4b4b4; Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3escapedSerialWriteTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffkiss_dump_eepromTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3CMD_ROM_READTb4b4b4)Tb4b4b4;
Te6edf3eeprom_dump_allTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffeeprom_writeTb4b4b4(Tffa657uint8_t Te6edf3addrTb4b4b4, Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3eeprom_info_lockedTb4b4b4(Tb4b4b4) Tff7b72&Tff7b72& Te6edf3addr Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4) Tb4b4b4{
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4, Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3kiss_indicate_errorTb4b4b4(Te6edf3ERROR_EEPROM_LOCKEDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_eraseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= T79c0ff0Tb4b4b4; Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72while Tb4b4b4(Tffa657trueTb4b4b4) Tb4b4b4{ Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4; Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tb4b4b4}
Tffa657bool Td2a8ffeeprom_lock_setTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3INFO_LOCK_BYTETb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Td2a8ffeeprom_product_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_PRODUCTTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3PRODUCT_RNODETb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Td2a8ffeeprom_model_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3model Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_MODELTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A9Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Td2a8ffeeprom_hwrev_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3hwrev Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_HW_REVTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hwrev Tff7b72!Tff7b72= T79c0ff0x00 Tff7b72&Tff7b72& Te6edf3hwrev Tff7b72!Tff7b72= T79c0ff0xFFTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Td2a8ffeeprom_checksum_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657char Tff7b72*Te6edf3data Tff7b72= Tb4b4b4(Tffa657charTff7b72*Tb4b4b4)Te6edf3mallocTb4b4b4(Te6edf3CHECKSUMMED_SIZETb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657uint8_t Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3CHECKSUMMED_SIZETb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657char Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3dataTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Te6edf3byteTb4b4b4;
Tb4b4b4}
Tffa657unsigned Tffa657char Tff7b72*Te6edf3hash Tff7b72= Te6edf3MD5Tff7b72:Tff7b72:Te6edf3make_hashTb4b4b4(Te6edf3dataTb4b4b4, Te6edf3CHECKSUMMED_SIZETb4b4b4)Tb4b4b4;
Tffa657bool Te6edf3checksum_valid Tff7b72= Tffa657trueTb4b4b4;
Tff7b72for Tb4b4b4(Tffa657uint8_t Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff16Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3stored_chk_byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CHKSUMTff7b72+Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3calced_chk_byte Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3stored_chk_byte Tff7b72!Tff7b72= Te6edf3calced_chk_byteTb4b4b4) Tb4b4b4{
Te6edf3checksum_valid Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Te6edf3freeTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Te6edf3freeTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3checksum_validTb4b4b4;
Tb4b4b4}
Tffa657bool Td2a8ffeeprom_have_confTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_conf_loadTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3eeprom_have_confTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3lora_sf Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_SFTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_cr Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_CRTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_txp Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_TXPTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_freq Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Te6edf3lora_bw Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_conf_saveTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3hw_ready Tff7b72&Tff7b72& Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_SFTb4b4b4)Tb4b4b4, Te6edf3lora_sfTb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_CRTb4b4b4)Tb4b4b4, Te6edf3lora_crTb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_TXPTb4b4b4)Tb4b4b4, Te6edf3lora_txpTb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4, Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4, Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4, Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4, Te6edf3lora_bwTb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4, Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4, Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4, Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4, Te6edf3lora_freqTb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4, Te6edf3CONF_OK_BYTETb4b4b4)Tb4b4b4;
Te6edf3led_indicate_infoTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_indicate_warningTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_conf_deleteTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffunlock_romTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_indicate_errorTb4b4b4(T79c0ff50Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_eraseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────